磐舟一體化云交付平臺是中國移動自主研發的面向開發人員的代碼開發,自動部署的平臺。磐舟一體化交付平臺自研實現了一套GitOps驅動引擎,支持從需求設計、開發構建、測試部署的全部開發與運維功能需求,實現應用一鍵上磐基容器云平臺。
磐基容器云平臺是中國移動信息公司基于Kubernetes構建的企業級PaaS解決方案,實現Kubernetes能力的標準化封裝及調用,包括提供開發和運行環境、資源彈性伸縮、精細化微服務管理、便捷一站式服務、跨地域多集群調度和智能監控維護等六大能力。
磐舟和磐基是相互配合的,開發人員在磐舟集群上開發,部署到磐基PaaS集群上運行應用,也支持在磐舟上歸檔磐基集群ops配置,通過GitOps來管理、部署磐基集群。
隨著國產化進程推進,中國移動建設了大量的國產化服務器集群,磐基磐舟如何實現國產化的容器云開發交付一體化體系?在某資源池我們需要統一管理近500臺鯤鵬服務器,源碼可以通過磐舟統一編譯為X86/ARM雙架構的鏡像,但是集群的管理也需要實現ARM自動化支持,開發交付環節頻繁使用Kubernetes集群,最近2個月已有800多次的集群創建回收動作,人工支撐顯然已經跟不上云原生的發展速度了。
另一個場景是,移動的開發人員在集團磐舟Kubernetes集群上進行開發,制作好鏡像后,不能直接推送到省測公司的Kubernetes集群,需要運維人員在磐基中心集群上通過多級ssh跳板機,手工登錄到省公司磐基K8s集群進行部署。這一步沒有實現自動化,操作流程十分繁瑣。
想解決這些問題,我們進行了一些頭腦風暴。
首先是考慮是否可以將集群統一?答案顯然是不行。因為集團k8s集群,由于業務不同,不能和省公司的k8s集群合為一體。
那么是否可以做k8s的集群聯邦?目前集團集群與省公司集群之間可能是比較遠的(跨省),集群聯邦的整體消耗會大一些,并且目前跳板機的場景,跳到省公司集群一臺機器上就夠了,不需要看到省公司的所有機器。
維持ssh現狀,維護shell腳本?shell腳本需要人力維護,在省公司的節點邏輯很可能需要使用service來完整,繼續維護shell,第一不是那么CloudNative,第二也背離了磐基磐舟輕松上云的初衷。
本著達到靈活、易用,提升集群部署時效,解決端到端開發運維效率,成就內部客戶的目的,我們針對整體場景做了進一步抽象,抽象成“1+31+N”的典型網絡模型。
1個中心+“31+N”個邊緣集群的場景,中心與集群、集群與集群,集群與N之間,存在著網絡隔離與網絡不可預知的情況;在這些集群之間,保持網絡隔離的情況下,在中心節點做到云原生體驗的自動化運維,做到GitOps自動化。
帶著抽象之后的這個模型,我們在平臺管理上進行了深入調研,最終選用了CNCF的邊緣計算項目KubeEdge來解決完成以上所有集群的統一管理。
KubeEdge是什么?解決什么問題?
KubeEdge的特點是在云邊通信的資源消耗小,使用方式基于Kubernetes,上手方便,比較適合我們當前的場景。KubeEdge項目是華為云開源的一個基于Kubernetes的開放平臺,并為網絡應用提供基礎架構支持,提供云和邊緣之間的部署和元數據同步。
KubeEdge具有以下幾點關鍵優勢:
1)容器化應用封裝
Build once, run anywhere
輕量化基礎鏡像,降低資源占用
2)通用的應用抽象定義
業界事實標準
云上、邊緣統一管理
3)松耦合的架構
易擴展的API框架
易于定制平臺組件
KubeEdge 在架構上分為云端組件 CloudCore 和邊緣側 EdgeCore,詳細的架構細節可以參考文檔:https://docs.kubeedge.io/en/docs/architecture/
磐舟磐基平臺的KubeEdge實踐
通過對KubeEdge的應用場景分析,以及對移動內部1+31+N模型結合,我們可以將集團的“1”想象為KubeEdge的CloudCore節點、將各省公司的node節點想象為EdgeCore節點,從而就實現了1+31+N下的云邊協同模型。映射到我們的具體場景是這樣:
1)集群業務部署場景:
把集團的K8s master節點作為KubeEdge的CloudCore節點,省公司的node節點作為KubeEdge的EdgeCore節點,CloudCore節點與EdgeCore節點連接上后,在EdgeCore上啟動磐舟GitOps業務中ArgoCD pod,統一下發CD一體化的元數據,從而將省公司資源池做到方便的集群創建、集群納管,最終方便的達成自動化GitOps交付。
2)集群自動化創建場景:
基于省公司的資源池來創建磐基PaaS集群,運維人員在master節點使用磐舟GitOps,通過CloudCore與EdgeCore的通信,部署來自openEuler社區的集群自動化部署工具-eggo的實例。之后在邊緣側,就可以通過eggo來自動化完成省公司磐基PaaS集群的創建。
綜上,通過將KubeEdge集成至磐基PaaS平臺,成功打通移動集團與各省公司的網絡,實現“1+31+N”的K8S集群全部連通、實現統一管理、簡化多集群的運維系統、減少運營成本;同時也成功將前面提到的500臺鯤鵬服務器以及它上面的BC-Linux for Euler集群納入磐基PaaS平臺的大家庭之中,運維效率大幅增加。
磐舟磐基平臺在多集群管理的下一步計劃
在完成KubeEdge集成到磐舟磐基平臺這項專項工作之后,考慮到后續不僅是由master節點納管單個edge節點,還會考慮在將南向集群的單個節點組成一個集群,實現控制面的自動化集群部署,支撐省公司集群的控制面自動化。磐舟磐基平臺計劃進一步集成CNCF社區最新的集群聯邦方案Karmada來完成“1+31+N”的PaaS多集群統一管理工作。